package cn.huaqingcheng.tianshu.infrastructure.sys.entity;

import cn.huaqingcheng.tianshu.common.core.model.AttributeMap;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 系统文件
 */
@Data
@NoArgsConstructor
@TableName("sys_file")
public class SysFileEntity {

    /**
     * 文件ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 自定义 scheme 的 URI
     */
    @TableField("uri")
    private String uri;

    /**
     * 文件方案
     */
    @TableField("scheme")
    private String scheme;

    /**
     * 文件路径
     */
    @TableField("\"path\"")
    private String path;

    /**
     * 文件查询参数
     */
    @TableField("query")
    private String query;

    /**
     * 文件MIME类型
     */
    @TableField("mime_type")
    private String mimeType;

    /**
     * 文件字节数
     */
    @TableField("byte_size")
    private Long byteSize;

    /**
     * 账户ID
     */
    @TableField("account_id")
    private Long accountId;

    /**
     * 分组ID
     */
    @TableField("group_id")
    private Long groupId;

    /**
     * 原始文件名
     */
    @TableField("original_name")
    private String originalName;

    /**
     * 文件属性
     */
    @TableField("file_attrs")
    private AttributeMap<Object> fileAttrs;

    /**
     * 存储参数
     */
    @TableField("storage_params")
    private AttributeMap<Object> storageParams;

    /**
     * 是否公开
     */
    @TableField("is_public")
    private Boolean isPublic;

    @TableField("created_at")
    private LocalDateTime createdAt;

    @TableField("updated_at")
    private LocalDateTime updatedAt;

}
